// Copyright 2022 jeff.li. and/or its affiliates.

#pragma once

#include <string>
#include <vector>

#include <tbir/runtime/container/string.h>
#include <tbir/runtime/container/string_view.h>
#include <tbir/runtime/runtime_port.h>

namespace tbir::runtime {

    namespace FunctionNameRules {
        TURBO_EXPORT String get_class_view_name(string_view class_name);

        TURBO_EXPORT String add_wrapper_suffix(string_view function_name);

        TURBO_EXPORT String add_packed_suffix(string_view function_name);

        TURBO_EXPORT String add_class_prefix(string_view class_name, string_view method_name);

        TURBO_EXPORT string_view remove_class_prefix(string_view class_name, string_view method_name);

        TURBO_EXPORT bool is_class_method(string_view class_name, string_view method_name);
    }  // namespace FunctionNameRules

}  // namespace tbir::runtime
